/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Beans;

import Modelo.CategoriaProducto;
import Utils.Constantes;
import Utils.Mensajes;
import java.io.Serializable;
import java.util.ArrayList;
import javax.faces.event.ActionEvent;

/**
 *
 * @author HNCR
 */
public class BeanCategoriaProducto implements Serializable {
    private CategoriaProducto objCategoriaProducto_Reg;
    private CategoriaProducto objCategoriaProducto_Mod;
    private CategoriaProducto objCategoriaProducto_Detalle;
    private CategoriaProducto objCategoriaProducto_Elimina;
    
    private ArrayList<CategoriaProducto> arr_CategoriaProducto = null;
    
    //TabView comportamiento ocultar o mostrar componentes
    private Integer activeTabIndex; //indice de los tab
    private boolean bandVer=true;    
    private boolean bandMod=true;
    private boolean bandEli=true;

    private String puntAnt;
    
    public CategoriaProducto getObjCategoriaProducto_Reg() {
        return objCategoriaProducto_Reg;
    }

    public void setObjCategoriaProducto_Reg(CategoriaProducto objCategoriaProducto_Reg) {
        this.objCategoriaProducto_Reg = objCategoriaProducto_Reg;
    }

    public CategoriaProducto getObjCategoriaProducto_Mod() {
        return objCategoriaProducto_Mod;
    }

    public void setObjCategoriaProducto_Mod(CategoriaProducto objCategoriaProducto_Mod) {
        this.objCategoriaProducto_Mod = objCategoriaProducto_Mod;
    }

    public CategoriaProducto getObjCategoriaProducto_Detalle() {
        return objCategoriaProducto_Detalle;
    }

    public void setObjCategoriaProducto_Detalle(CategoriaProducto objCategoriaProducto_Detalle) {
        this.objCategoriaProducto_Detalle = objCategoriaProducto_Detalle;
    }

    public CategoriaProducto getObjCategoriaProducto_Elimina() {
        return objCategoriaProducto_Elimina;
    }

    public void setObjCategoriaProducto_Elimina(CategoriaProducto objCategoriaProducto_Elimina) {
        this.objCategoriaProducto_Elimina = objCategoriaProducto_Elimina;
    }

    public ArrayList<CategoriaProducto> getArr_CategoriaProducto() {
        return arr_CategoriaProducto;
    }

    public void setArr_CategoriaProducto(ArrayList<CategoriaProducto> arr_CategoriaProducto) {
        this.arr_CategoriaProducto = arr_CategoriaProducto;
    }

    public Integer getActiveTabIndex() {
        return activeTabIndex;
    }

    public void setActiveTabIndex(Integer activeTabIndex) {
        this.activeTabIndex = activeTabIndex;
    }

    public boolean isBandVer() {
        return bandVer;
    }

    public void setBandVer(boolean bandVer) {
        this.bandVer = bandVer;
    }

    public boolean isBandMod() {
        return bandMod;
    }

    public void setBandMod(boolean bandMod) {
        this.bandMod = bandMod;
    }

    public boolean isBandEli() {
        return bandEli;
    }

    public void setBandEli(boolean bandEli) {
        this.bandEli = bandEli;
    }

    public String getPuntAnt() {
        return puntAnt;
    }

    public void setPuntAnt(String puntAnt) {
        this.puntAnt = puntAnt;
    }
    
    //Iniciallzaciones (limpian los objetos)
    
    public void doIniciarCategoriaProductoListar(){
        this.arr_CategoriaProducto = new ArrayList<CategoriaProducto>();
    }
    
    public void doIniciarCategoriaProductoRegistrar(){
        this.objCategoriaProducto_Reg = new CategoriaProducto();
    }
    
    public void doIniciarCategoriaProductoDetalle(){
        this.objCategoriaProducto_Detalle = new CategoriaProducto();
    }
    
    public void doIniciarCategoriaProductoModificar(){
        this.objCategoriaProducto_Mod = new CategoriaProducto();
    }
    public void doIniciarCategoriaProductoEliminar(){
        this.objCategoriaProducto_Elimina = new CategoriaProducto();
    }
    
    //Constructor
    public BeanCategoriaProducto() {
        
        try {
            
            this.doIniciarCategoriaProductoRegistrar();
            
        } catch (Exception e) {
            Mensajes.manejarError(e,"Error al Iniciar Proceso");
        }
        
    }
    
    public String doCategoriaRegistra(){
          
    try
        {
            boolean a = false;
            a = CategoriaProducto.registrarCategoriaProducto(objCategoriaProducto_Reg);
            
            if(a){
                Mensajes.guardarMensajeExito("Registro","Registrado correctamente");
                this.doIniciarCategoriaProductoRegistrar();// limpia los datos de la vista cuando se registra
            }
            else{
                 Mensajes.manejarError("Registro","Error al Registrar");                
            }
            
        } catch (Exception e) {
            Mensajes.manejarError(e,"Registrar");
        }   
    
      return null;
    }
    
    
    /*
     * Método invocado por el Beans para eliminar un cat Producto
     */
      public String doEliminarCategoriaProducto(){     
        
        try
        {           
            if (this.eliminarCategoriaProducto()){  
                Mensajes.guardarMensajeExito("Eliminar","RealizadoCorrectamente");                   
            }else {                
                Mensajes.manejarError("Eliminar","Error de Eliminacion");                
            }
            
        }
        catch( Exception e )
        {
            Mensajes.manejarError(e,"Eliminacion de Categoria Producto");
        }
        desactivaTabElim();
        return null;
    }
      
      /*
     * Método invocado por el Beans para modificar un cat Producto
     */
      public String doModificarCategoriaProducto(){     
        
        try
        {           
            if (this.modificarCategoriaProducto()){  
                Mensajes.guardarMensajeExito("Modificar","Realizado Correctamente");                   
            }else {                
                Mensajes.manejarError("Modificar","Error de Modificación");                
            }
            
        }
        catch( Exception e )
        {
            Mensajes.manejarError(e,"Modificación de Categoria Producto");
        }
        desactivaTabElim();
        return null;
    }
      
      
      public boolean  eliminarCategoriaProducto(){
        boolean a=false;        
       CategoriaProducto so=new CategoriaProducto();
        try{            
            so=this.objCategoriaProducto_Elimina;
            this.doIniciarCategoriaProductoEliminar();
            a=CategoriaProducto.eliminarCategoriaProducto(so);         
        }catch(Exception e){
            System.out.println("Error en el metodo por: " + e.getMessage());
            e.printStackTrace();
        }
       return a;    
    }
      
      public boolean  modificarCategoriaProducto(){
        boolean a=false;        
       CategoriaProducto so=new CategoriaProducto();
        try{            
            so=this.objCategoriaProducto_Mod;
            this.doIniciarCategoriaProductoModificar();
            a=CategoriaProducto.modificarCategoriaProducto(so);         
        }catch(Exception e){
            System.out.println("Error en el metodo por: " + e.getMessage());
            e.printStackTrace();
        }
       return a;    
    }
    
    public ArrayList<CategoriaProducto> doListarCategoria(){
        this.doIniciarCategoriaProductoListar();
        this.arr_CategoriaProducto=CategoriaProducto.getListarCategoria();
        return this.arr_CategoriaProducto;
    }
    
    public String getSizeRegistrosCategoria(){
        if(this.arr_CategoriaProducto==null){
            return "0";
          }
        else{
            return "" + this.arr_CategoriaProducto.size();
        }
    }
    
    //busqueda 
     public void onClickBusq(ActionEvent evt){ 
        Object param=evt.getComponent().getAttributes().get("param");
        this.puntAnt=param.toString();          
    }
    
    //elimina
     public String eliminarCategoriaProducto(CategoriaProducto so){        
        this.doIniciarCategoriaProductoEliminar();
        this.objCategoriaProducto_Elimina=so;
        this.bandEli=false;     
        this.activeTabIndex=Constantes.CAT_TAB_ELIMINA;         
        return null;          
    }
    
     //desactiva tab elim
     public String desactivaTabElim(){        
       this.bandEli=true;
       
       if(puntAnt.compareTo("2")==0){
           //this.doBuscarAsociacion();
           //this.activeTabIndex=Constantes.TAB_BUSQUEDA;
       }
       else{
           if(puntAnt.compareTo("1")==0){    
               this.doIniciarCategoriaProductoEliminar();          
               this.doListarCategoria();
               this.activeTabIndex=Constantes.TRAB_TAB_LISTA;
           }
       }
      Mensajes.guardarMensajeExito("Cancelar","Acción");
       
       return null;
    }
     
     public String modificarCategoriaProducto(CategoriaProducto so){        
        this.doIniciarCategoriaProductoModificar();
        this.objCategoriaProducto_Mod=so;
        this.bandMod=false;     
        this.activeTabIndex=Constantes.CAT_TAB_MODIFICA;         
        return null;          
    }
     
     //desactiva tab mod
     public String desactivaTabMod(){        
       this.bandMod=true;
       
       if(puntAnt.compareTo("2")==0){
           //this.doBuscarAsociacion();
           //this.activeTabIndex=Constantes.TAB_BUSQUEDA;
       }
       else{
           if(puntAnt.compareTo("1")==0){    
               this.doIniciarCategoriaProductoModificar();          
               this.doListarCategoria();
               this.activeTabIndex=Constantes.CAT_TAB_LISTA;
           }
       }
      Mensajes.guardarMensajeExito("Cancelar","Acción");
       
       return null;
    }
     
}
